container: Remove focus_child pointer
authorTimm Bäder <mail@baedert.org>
Wed, 8 Feb 2017 09:02:47 +0000 (10:02 +0100)
committerTimm Bäder <mail@baedert.org>
Fri, 31 Mar 2017 07:50:39 +0000 (09:50 +0200)
Use GtkWidget's instead.

gtk/gtkcontainer.c
gtk/gtkwidget.c

index a5d40d559dbfad51d13d7295035dcfa07685dfa8..aedd504458b659e39949e653f84e8edf64756d3e 100644 (file)
 
 struct _GtkContainerPrivate
 {
-  GtkWidget *focus_child;
-
   GdkFrameClock *resize_clock;
   guint resize_handler;
 
@@ -1590,12 +1588,7 @@ gtk_container_remove_unimplemented (GtkContainer     *container,
 static void
 gtk_container_init (GtkContainer *container)
 {
-  GtkContainerPrivate *priv;
-
   container->priv = gtk_container_get_instance_private (container);
-  priv = container->priv;
-
-  priv->focus_child = NULL;
 }
 
 static void
@@ -1607,8 +1600,6 @@ gtk_container_destroy (GtkWidget *widget)
   if (priv->restyle_pending)
     priv->restyle_pending = FALSE;
 
-  g_clear_object (&priv->focus_child);
-
   /* do this before walking child widgets, to avoid
    * removing children from focus chain one by one.
    */
@@ -2059,47 +2050,33 @@ static void
 gtk_container_real_set_focus_child (GtkContainer     *container,
                                     GtkWidget        *child)
 {
-  GtkContainerPrivate *priv;
+  GtkWidget *focus_child;
 
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (child == NULL || GTK_IS_WIDGET (child));
 
-  priv = container->priv;
-
-  if (child != priv->focus_child)
-    {
-      if (priv->focus_child)
-        g_object_unref (priv->focus_child);
-      priv->focus_child = child;
-      if (priv->focus_child)
-        g_object_ref (priv->focus_child);
-    }
-
+  focus_child = gtk_widget_get_focus_child (GTK_WIDGET (container));
 
   /* check for h/v adjustments
    */
-  if (priv->focus_child)
+  if (focus_child)
     {
       GtkAdjustment *hadj;
       GtkAdjustment *vadj;
       GtkAllocation allocation;
-      GtkWidget *focus_child;
       gint x, y;
 
       hadj = g_object_get_qdata (G_OBJECT (container), hadjustment_key_id);
       vadj = g_object_get_qdata (G_OBJECT (container), vadjustment_key_id);
       if (hadj || vadj)
         {
-
-          focus_child = priv->focus_child;
-
           while (gtk_widget_get_focus_child (focus_child))
             focus_child = gtk_widget_get_focus_child (focus_child);
 
-          gtk_widget_translate_coordinates (focus_child, priv->focus_child,
+          gtk_widget_translate_coordinates (focus_child, focus_child,
                                             0, 0, &x, &y);
 
-          _gtk_widget_get_allocation (priv->focus_child, &allocation);
+          _gtk_widget_get_allocation (focus_child, &allocation);
           x += allocation.x;
           y += allocation.y;
 
@@ -2647,11 +2624,10 @@ gtk_container_focus_move (GtkContainer     *container,
                           GList            *children,
                           GtkDirectionType  direction)
 {
-  GtkContainerPrivate *priv = container->priv;
   GtkWidget *focus_child;
   GtkWidget *child;
 
-  focus_child = priv->focus_child;
+  focus_child = gtk_widget_get_focus_child (GTK_WIDGET (container));
 
   while (children)
     {
index f89351aff61428e3a617b5a2ec0d959ac1db13f0..233dd6803df13b3036f521334157c73067c282ad 100644 (file)
@@ -15739,6 +15739,9 @@ gtk_widget_set_focus_child (GtkWidget *widget,
 
   g_return_if_fail (GTK_IS_WIDGET (widget));
 
+  if (child == priv->focus_child)
+    return;
+
   if (child != NULL)
     {
       g_return_if_fail (GTK_IS_WIDGET (child));